Windows Forms - Utilização do NameSpace Math

A namespace Math é um ponte que casa o Framework e o processador aritimético do sistema.

Por exemplo, a função SENO está gravada no processador aritimético (um dos núcleos do processador) e no NameSpace Math ele chama a funcionalidade do processador e interfaceia o resultado com o framework.

As funções dentro da NameSpace Math são :

Função Cálculo efetuado
sqrt Raiz quadrada (square root)
round Arredonda o número seguindo o critério maior/menor que 5
log Calcula o log do número ( na base 10)
pi Valor de Pi
abs Valor absoluto do número (retira sinal -) - Módulo do número
sin,cos,tan Calcula o seno, cosseno ou a tangende do número
asin,acos,atan Calcula ângulo cujo seno, cosseno ou a tangende dá o valor especificado
bigmul Multiplica 2 números de 32 bits
ceiling Retorna o valor inteiro menor ou igual ao especificado
divrem Faz a operação inversa da divisão, ou seja, fornecidos o divisor, dividendo e o resto ele retorna o número que gerou esse resultado na divisão.
exp Calcula e elevado ao expoente especidicado - e é o número de Euler e é um número irracional próximo de 2,718281828459045235360287.
IEEERemainder Retorna o resto da Divisão
max Retorna o maior número
min Retorna o menor número
pow(x,y) Calcula quanto é x elevado a y
round Arredonda o número
sign Retorna o sinal do número - retorna -1 se for menor que zero, 0 se for 0, 1 se for maior que 0
Truncate Elimina a parte fracionária do número sem levar em conta o valor da parte fracionária

Exemplos

Imports System.Math
Module Objeto_Math
    ' o módulo não pode chamar Math porque Math é o nome da biblioteca

    Public Sub OperacoesMatematicascomObjeto()

        ' operações matematicas
        Dim MeuValor As Double

        MeuValor = Math.Sqrt(81) ' Raiz quadrada - MeuValor = 9.0
        MeuValor = Math.Round(42.889, 2) ' Arredondamento - MeuValor = 42.89
        MeuValor = Math.Log(24.212) ' Logaritimo base 10 - MeuValor = 3.18..
        MeuValor = Math.PI ' Pi - MeuValor = 3.14..

        MeuValor = Math.Abs(-10) ' Valor absoluto ou módulo - MeuValor = 10.0
        'Abs(Decimal), Abs(Double), Abs(Int16),Abs(Int32),Abs(Int64),Abs(SByte),Abs(Single)

        MeuValor = Math.Acos(2) ' devolve o arco cujo cosseno tem valor 2
        MeuValor = Math.Asin(2) ' devolve o arco cujo seno tem valor 2
        MeuValor = Math.Atan(2) ' devolve o arco cuja tangente tem valor 2
        MeuValor = Math.Atan2(2, 3) ' devolve o arco cuja tangente tem valor de 2 / 3
        MeuValor = Math.BigMul(234, 2334) ' multiplica 2 números de 32 bits
        MeuValor = Math.Ceiling(10.23) ' Retorna o inteiro maior ou igual ao parametro
        '                Ceiling(Decimal), Ceiling(Double)
        MeuValor = Math.Cos(3) ' devolve o cosseno do angulo 3 radianos
        MeuValor = Math.Cosh(3) ' devolve o cosseno hiperbólico do angulo 3 radianos

        Dim dividendo As System.Int32 = 51
        Dim divisor As System.Int32 = 3
        Dim resto As System.Int32 = 0
        MeuValor = Math.DivRem(dividendo, divisor, resto)
        '        DivRem(Int32, Int32, Int32), DivRem(Int64, Int64, Int64)
        Dim expoente = Math.Exp(3) ' devolve e elevado a 3 potencia ( e= 2.1718...)

        MeuValor = Math.Floor(10.23) ' Retorna o inteiro menor ou igual ao parametro
        '                Floor(Decimal), Floor(Double)

        MeuValor = Math.IEEERemainder(10, 3) ' Retorna o resto da divisão ( ambos double )

        MeuValor = Math.Log(2) ' devolve log de 2 na base e ( double )
        MeuValor = Math.Log(2, 4) ' devolve log de 2 na base 4 ( double )
        MeuValor = Math.Log10(2) ' devolve log de 2 na base 10 ( double )

        Dim varByte As Byte
        varByte = Math.Max(5, 9) ' retorna o maior número...no caso 9
        'Max(Byte, Byte), Max(Decimal, Decimal), Max(Double, Double), Max(Int16, Int16), Max(Int32, Int32), Max(Int64, Int64)
        'Max(SByte, SByte), Max(Single, Single), Max(UInt16, UInt16), Max(UInt32, UInt32), Max(UInt64, UInt64),

        varByte = Math.Min(5, 9) ' retorna o menor número...no caso 5
        'Min(Byte, Byte), Min(Decimal, Decimal), Min(Double, Double), Min(Int16, Int16), Min(Int32, Int32),
        'Min(Int64, Int64), Min(SByte, SByte), Min(Single, Single), Min(UInt16, UInt16), Min(UInt32, UInt32),
        'Min(UInt64, UInt64)

        varByte = Math.Pow(2, 3) ' retorna 2 elevado a 3 potencia

        varByte = Math.Round(2.2345) ' arredondamento
        'Round(Decimal), Round(Double), Round(Decimal, Int32), Round(Decimal, MidpointRounding),
        'Round(Double, Int32), Round(Double, MidpointRounding), Round(Decimal, Int32, MidpointRounding),
        'Round(Double, Int32, MidpointRounding)

        varByte = Math.Sign(2.3) ' retorna -1 se for menor que zero, 0 se for 0, 1 se for maior que 0
        'Sign(Decimal), Sign(Double),Sign(Int16), Sign(Int32), Sign(Int64), Sign(SByte), Sign(Single)

        MeuValor = Math.Sin(2) ' devolve o seno do angulo 2 rads
        MeuValor = Math.Sinh(2) ' devolve o seno hiperbólico do angulo 2 rads

        MeuValor = Math.Sqrt(2) ' devolve a raiz quadrada de 2

        MeuValor = Math.Tan(2) ' devolve a tangente do angulo 2 rads
        MeuValor = Math.Tanh(2) ' devolve o tangente hiperbólica do angulo 2 rads

        MeuValor = Math.Truncate(2.3434343) ' devolve a parte inteira do número
        'Truncate(Decimal), Truncate(Double)

        MeuValor = Math.E ' devolve o valor de e ( 2.1718....)
        MeuValor = Math.PI ' devolve o valor de Pi ( 3.1415....)

    End Sub

Como fazer uma divisão seguindo regras matemáticas

    Public Sub ExecutaDivisao()
        'IsNegativeInfinity,IsPositiveInfinity, IsNaN
        Dim a As Double
        Dim b As Double
        Dim res As Double

        a = InputBox("Digite o primeiro Número")
        b = InputBox("Digite o segundo Número")
        res = a / b

        If Double.IsInfinity(res) Then
            If Double.IsNegativeInfinity(res) Then
                MsgBox("O resultado encontrado é um número pequeno")
            Else

                If Double.IsPositiveInfinity(res) Then
                    MsgBox("O resultado é um número muito grande")
                Else

                    If Double.IsNaN(res) Then
                        MsgBox("O resultado encontrado não é um valor numérico")
                    End If
                End If
            End If
        Else
            MsgBox("O resultado da divisão é " + res.ToString)
        End If
    End Sub

Os limites das variáveis

Infinito

No framework o infinito pode ser infinito positivo ou infinito negativo.

    Public Sub ExibeInfinito()
        Dim dbl As Double = 999
        Dim inf As Double

        inf = dbl / 0

        MsgBox(inf) ' exibe +Infinito


        Dim large As Double = 1.0E+299
        Dim small As Double = 1.0E-299
        Dim res As Double

        res = large / small
        MsgBox(res) ' exibe +Infinito
    End Sub

End Module